package zsc.nine.onlinemall.mapper;

import org.apache.ibatis.annotations.*;
import zsc.nine.onlinemall.entity.Comment;

import java.util.List;

/**
 * @author :莫远烙
 * @version 1.0
 */
@Mapper
public interface CommentMapper {

    //1、增加
    //2、删：
    //3、查看所有、
    //4、更新名字
    //10、根据id查找

    /**
     * @param comment :评论实体
     * @return true:添加成功，false:添加失败
     */
    //1、增加
    @Insert("insert into t_comment(bUserId,bProductId,content,createTime,userName,productName) value(#{bUserId},#{bProductId},#{content},#{createTime},#{userName},#{productName})")
    boolean insertComment(Comment comment);

    /**
     * @param id :评论id
     * @return true:删除成功，false:删除失败
     */
    //2、删：
    @Delete("delete from t_comment where id=#{id}")
    boolean deleteComment(int id);

    /**
     * @return 所有的评论的列表
     */
    //3、查看所有评论
    @Select("select * from t_comment")
    List<Comment> findAll();

    //用户查看自己的评论内容根据id

    /**
     * @param userId 用户id
     * @return List 评论内容列表
     */
    @Select("select content from t_comment where bUserId=#{userId}")
    List<Comment> findCommentByUserId(int userId);

    //用户查看自己的评论内容根据邮箱
    //多表查询

    /**
     * @param userEmail
     * @return
     * @deprecated 弃用，userEmail不生效 请调用findCommentByUserId(int userId);
     */
    @Select("select content from t_comment as c t_user where t_user.userEmail=#{userEmail} and  c.bUserId=u.id")
    Comment findCommentByUserEmail(String userEmail);



    /**
     * @param productId 产品id
     * @return 评论内容列表
     */
    //查看对某一商品的所有评论
    @Select("select content from t_comment where bProductId=#{productId}")
    List<Comment> findCommentByProduct(int productId);



    /**
     * @param commentId      评论id
     * @param commentContent 评论内容
     * @return true:删除成功，false:删除失败
     */
    //4、根据评论id更新内容
    @Update("update t_comment set content=#{commentContent} where id=#{commentId}")
    boolean updateCommentById(int commentId, String commentContent);



    /**
     * @param userId         用户id
     * @param product        产品id
     * @param commentContent 待更新的评论内容
     * @return true:删除成功，false:删除失败
     */
    //4、根据用户id及产品id更新内容
    @Update("update t_comment set content=#{commentContent} where bUserId=#{userId} and bProductId=#{product}")
    boolean updateCommentByUser(int userId, int product, String commentContent);

    /**
     * @return 共有多少行数
     * @author Zainus
     */
    @Select("select count(id) from t_comment")
    String getLength();

    @Select("select * from t_comment where id=#{id}")
    Comment findById(int id);


}
